/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.tesoreria.beans;


import java.util.List;
import javax.ejb.EJB;
import org.cip.esymons.general.be.Solicitante;
import org.cip.esymons.general.util.ControladorAbstracto;
import org.cip.esymons.tesoreria.adapters.CuotasPorAnio;
import org.cip.esymons.tesoreria.bc.EjecutarFraccionamientoLocal;
import org.cip.esymons.tesoreria.bc.FraccionamientoFacadeLocal;
import org.cip.esymons.tesoreria.bc.MovimientoCuentaFacadeLocal;
import org.cip.esymons.tesoreria.be.DetPagoAgrupado;
import org.cip.esymons.tesoreria.be.EnumEstadoFraccionamiento;
import org.cip.esymons.tesoreria.be.EnumEstadoMovimiento;
import org.cip.esymons.tesoreria.be.Fraccionamiento;
import org.cip.esymons.tesoreria.be.MovimientoCuenta;
import org.cip.esymons.tesoreria.be.MovimientoCuota;
import org.cip.esymons.tesoreria.be.MovimientoFraccionamiento;

/**
 *
 * @author Ingrid Capuñay Ruiz
 */
public class FraccionamientoController extends ControladorAbstracto{

    @EJB
    EjecutarFraccionamientoLocal delegado;
    @EJB
    FraccionamientoFacadeLocal delegadoFraccionamientoFacade;
    @EJB
    MovimientoCuentaFacadeLocal movimientoCuentaFacadeLocal;
    private String dnioNroCip;

    public String buscarPersona() {
        delegado.getRealizarFraccionamientoLocal().buscarPersona(dnioNroCip);
        return null;
    }

    public String busquedaAvanzada() {
        BusquedaPersonasController bpc = (BusquedaPersonasController) getBean("busquedaPersonasController");
        bpc.setControladorSolicitante(8);
        bpc.setComboTipoHabilitado(false);
        bpc.setApeMatPerNat(null);
        bpc.setApePatPerNat(null);
        bpc.setDniPerNat(null);
        bpc.setNomPerNat(null);
        bpc.setRazsocPerJur(null);
        bpc.setRucCliente(null);
        bpc.setTipoPersonaSeleccionada("NA");
        bpc.setBuscarSoloColegiados(true);
        return "busquedaAvanzada";
    }

    public String anularFraccionamiento() {
        Long codigo = Long.decode(ControladorAbstracto.getRequestParameter("codigo"));
        Fraccionamiento fra = delegadoFraccionamientoFacade.find(codigo);
        fra.setEstado(EnumEstadoFraccionamiento.Anulado);
        delegadoFraccionamientoFacade.edit(fra);
        for (MovimientoFraccionamiento movFra : fra.getMovimientoFraccionamientoList()) {
            for (MovimientoCuota mc : movFra.getMovimientoCuotaList()) {
                mc.getMovimientoCuenta().setEstado(EnumEstadoMovimiento.Anulada);
                movimientoCuentaFacadeLocal.edit(mc.getMovimientoCuenta());

            }
        }
        ControladorAbstracto.info("Se realizó con exito la anulación del fraccionamiento");
        return null;
    }

    public List<Fraccionamiento> getListaFraccionamiento() {
        return delegadoFraccionamientoFacade.findAll();
    }

    public String nuevo() {
        delegado.init();        
        return "nuevo";
    }

    public String mostrarCuotas() {
        return null;
    }

    public int getTipoBusquedaDNICIP() {
        return delegado.getRealizarFraccionamientoLocal().getTipoBusquedaDNICIP();
    }

    public void setTipoBusquedaDNICIP(int num) {
        delegado.getRealizarFraccionamientoLocal().setTipoBusquedaDNICIP(num);
    }

    public String seleccionarCuotasAPagar() {
        return "nuevo";
    }

    public String grabar() {
        delegado.getRealizarFraccionamientoLocal().guardarFraccionamiento();
        return "buscar";
    }

    public String cancelar() {
        delegado.getRealizarFraccionamientoLocal().cancelar();
        return "buscar";
    }

    public List<CuotasPorAnio> getDeudaCuotasPorAnio() {
        return delegado.getRealizarFraccionamientoLocal().mostrarDeudaCuotas();
    }

    public List<DetPagoAgrupado> getDeudaMulta() {
        return delegado.getRealizarFraccionamientoLocal().mostrarDeudaMulta();
    }

    public List<MovimientoCuenta> getCuotasAPagar() {
        return delegado.getRealizarFraccionamientoLocal().mostrarCuotas();
    }

    public String getDnioNroCip() {
        return dnioNroCip;
    }

    public void setDnioNroCip(String dnioNroCip) {
        this.dnioNroCip = dnioNroCip;
    }

    public Solicitante getSolicitanteSeleccionado() {
        return delegado.getRealizarFraccionamientoLocal().getSolicitanteSeleccionado();
    }

    public void setSolicitanteSeleccionado(Solicitante solicitante) {
        delegado.getRealizarFraccionamientoLocal().setSolicitanteSeleccionado(solicitante);
    }

    public int getModeloFraccionamiento() {
        return delegado.getRealizarFraccionamientoLocal().getModeloFraccionamiento();
    }

    public void setModeloFraccionamiento(int modeloFraccionamiento) {
        delegado.getRealizarFraccionamientoLocal().setModeloFraccionamiento(modeloFraccionamiento);
    }

    public int getCuotas() {
        return delegado.getRealizarFraccionamientoLocal().getCuotas();
    }

    public void setCuotas(int cuotas) {
        delegado.getRealizarFraccionamientoLocal().setCuotas(cuotas);
    }
}
